レプリケーション駆動な研究のために
August 31, 2023
“I shall certainly admit a system as empirical or scientific only if it is capable of being tested by experience.”
–Karl Popper, 1934
研究が社会科学足るために再現性はその要件である
レプリケーションは研究の前提であり, 過程であり, ゴールである
here::here()で対応可能. Pythonの場合 pyprojroot.here()renvを用いてバージョンを記録する. Pythonの場合 venv, poetry などrenvはRのバージョンを切り替えることができないので, 手動で切り替えるか常に最新版を用いるなどで対応USER/IMAGE:TAG で指定する. TAGを省略するとlatestが指定されるWSL: Connect to WSLを選択From a predefined...を選択. Ubuntuを選択
.devcontainer/devcontainer.jsonという設定ファイルが作成される.FROM: ベースとなるイメージを指定ENV: 環境変数を設定. Ubuntuの場合はDEBIAN_FRONTENDはこの設定が必要RUN: シェルコマンドを実行
apt update: パッケージリストを更新apt install: パッケージインストール (-y はすべてに自動でyesを返す)Reopen Folder in WSL/Locallyを選択.devcontainer/devcontainer.jsonを一度削除するReopen in Containerを選択
whoami)Reopen Folder in WSL/Locallyを選択FROM ubuntu
ENV DEBIAN_FRONTEND noninteractive
RUN apt update && apt install -y git
ARG USERNAME=vscode
ARG USER_UID=1000
ARG USER_GID=$USER_UID
RUN groupadd --gid $USER_GID $USERNAME \
&& useradd --uid $USER_UID --gid $USER_GID -m $USERNAME
USER $USERNAME.devcontainer/devcontainer.jsonのremoteUserをvscodeに変更するRebuild and Reopen in Containerを選択whoami)rockerプロジェクトrocker/rstudioまたはrocker/geospatialを使うことが多いrstudioというユーザが用意されている| イメージ | ベースイメージ | 概要 |
|---|---|---|
| rocker/r-ver | ubuntu | Ubuntu + R |
| rocker/rstudio | rocker/r-ver | + RStudio Server |
| rocker/tidyverse | rocker/rstudio | + tidyverse & devtools |
| rocker/verse | rocker/tidyverse | + tinytex & 組版関係のパッケージ |
| rocker/geospatial | rocker/geospatial | + 地理情報用パッケージ |
通常のRStudio Server
コンテナ内のRStudio Server
バインドマウント
ボリューム
docker-compose.ymlファイルにコンテナ起動の際の設定を記述することができるhandson2)Dockerfileを作成しFROM rocker/rstudioと記述するdocker-compose.ymlと.devcontainer/devcontainer.jsonを作成するRebuild and Reopen in Containerを選択するlocalhost:8787にアクセスする以下のようなDockerfileでコンテナの中にRパッケージをインストールできる
しかしこの方法はいくつかの問題がある
Dockerfileを書き換える必要があるこれらはrenvのキャッシュをDocker Volumesに保存することで解決できる
renvrenv用のDocker Volumeを作成する
docker volume create renvdocker-compose.yml, Dockerfileを以下のように書き換える
chownでrenvディレクトリの所有者をrstudioにしているRebuild and Reopen in Containerを選択するrenvを用いてパッケージを記録するDockerfile, docker-compose.yml, .devcontainer.json を修正する.
Rebuild and Reopen in Containerを選択するrenvを用いてパッケージをインストールするRebuild and Reopen in Containerを選択するrenv::restore() を実行して必要なパッケージをインストールするindex.qmd を開き, Ctrl-Shift-Kでスライドがビルドされることを確認するより詳しい使い方はZenn記事 を参考のこと
Udemy講座 (かめ) ・ Zenn記事 (柳本) ・ Notion記事 (神戸大 山﨑先生)